package cn.iocoder.yudao.module.crossborder.order.dal.dataobject.ordershipment;

import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 跨境电商订单发货 DO
 *
 * @author 芋道源码
 */
@TableName("crossborder_order_shipment")
@KeySequence("crossborder_order_shipment_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderShipmentDO extends BaseDO {

    /**
     * 发货编号
     */
    @TableId
    private Long id;
    /**
     * 发货单号
     */
    private String shipmentNo;
    /**
     * 订单编号
     */
    private Long orderId;
    /**
     * 订单号
     */
    private String orderNo;
    /**
     * 发货仓库编号
     */
    private Long warehouseId;
    /**
     * 发货仓库名称
     */
    private String warehouseName;
    /**
     * 发货类型（1正常发货 2部分发货 3补发 4换货发货）
     */
    private Integer shipmentType;
    /**
     * 配送方式
     */
    private String shippingMethod;
    /**
     * 配送服务
     */
    private String shippingService;
    /**
     * 承运商代码
     */
    private String carrierCode;
    /**
     * 承运商名称
     */
    private String carrierName;
    /**
     * 运单号
     */
    private String trackingNo;
    /**
     * 跟踪链接
     */
    private String trackingUrl;
    /**
     * 发货总数量
     */
    private BigDecimal totalQuantity;
    /**
     * 总重量（kg）
     */
    private BigDecimal totalWeight;
    /**
     * 总体积（立方米）
     */
    private BigDecimal totalVolume;
    /**
     * 包裹数量
     */
    private Integer packageCount;
    /**
     * 运费
     */
    private BigDecimal shippingCost;
    /**
     * 保险费
     */
    private BigDecimal insuranceCost;
    /**
     * 处理费
     */
    private BigDecimal handlingCost;
    /**
     * 总费用
     */
    private BigDecimal totalCost;
    /**
     * 货币代码
     */
    private String currencyCode;
    /**
     * 预计送达日期
     */
    private LocalDate estimatedDeliveryDate;
    /**
     * 预计运输天数
     */
    private Integer estimatedTransitDays;
    /**
     * 发货时间
     */
    private LocalDateTime shipTime;
    /**
     * 取件时间
     */
    private LocalDateTime pickupTime;
    /**
     * 运输中时间
     */
    private LocalDateTime inTransitTime;
    /**
     * 派送中时间
     */
    private LocalDateTime outForDeliveryTime;
    /**
     * 送达时间
     */
    private LocalDateTime deliveryTime;
    /**
     * 派送尝试次数
     */
    private Integer deliveryAttempts;
    /**
     * 配送状态（10待发货 20已发货 30运输中 40派送中 50已送达 60配送失败 70已退回）
     */
    private Integer deliveryStatus;
    /**
     * 签收人
     */
    private String deliverySignature;
    /**
     * 配送备注
     */
    private String deliveryNotes;
    /**
     * 海关申报信息JSON
     */
    private String customsDeclaration;
    /**
     * 清关状态（0未申报 1申报中 2已清关 3清关失败）
     */
    private Integer customsStatus;
    /**
     * 清关跟踪号
     */
    private String customsTrackingNo;
    /**
     * 是否投保
     */
    private Boolean isInsured;
    /**
     * 保险金额
     */
    private BigDecimal insuranceAmount;
    /**
     * 是否需要签收
     */
    private Boolean isSignatureRequired;
    /**
     * 特殊说明
     */
    private String specialInstructions;
    /**
     * 装箱单URL
     */
    private String packingSlipUrl;
    /**
     * 运单标签URL
     */
    private String shippingLabelUrl;
    /**
     * 发票URL
     */
    private String invoiceUrl;
    /**
     * 备注
     */
    private String remark;


}
